home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- from defaults import *
-
- try:
- import gconf
- import gobject
- except ImportError:
- haveGConfSupport = False
- _notifiers = { }
- _values = { }
- import xml.dom.minidom as xml
- document = None
-
- try:
- document = xml.dom.minidom.parse(CONFIG_FILE)
- except IOError:
- pass
- except xml.parsers.expat.ExpatError:
- print 'Configuration at ' + CONFIG_FILE + ' is invalid, ignoring'
-
- print 'Loading configuration from ' + CONFIG_FILE
-
- def _bool(string):
- return string == 'True'
-
- valueTypes = {
- 'int': int,
- 'bool': _bool,
- 'float': float,
- 'str': str }
- if document is not None:
- elements = document.getElementsByTagName('config')
- for e in elements:
- for n in e.getElementsByTagName('value'):
-
- try:
- name = n.attributes['name'].nodeValue
- except KeyError:
- continue
-
-
- try:
- valueType = n.attributes['type'].nodeValue
- except KeyError:
- continue
-
- if len(n.childNodes) != 1 or n.childNodes[0].nodeType != n.TEXT_NODE:
- continue
-
- valueString = n.childNodes[0].nodeValue
-
- try:
- value = valueTypes[valueType](valueString)
- except KeyError:
- continue
-
- _values[name] = value
-
-
-
- except:
- document is not None
-
- haveGConfSupport = True
- _GCONF_DIR = '/apps/glchess/'
- _config = gconf.client_get_default()
-
- try:
- _config.add_dir(_GCONF_DIR[:-1], gconf.CLIENT_PRELOAD_NONE)
- except gobject.GError:
- pass
-
- _gconfGetFunction = {
- gconf.VALUE_BOOL: gconf.Value.get_bool,
- gconf.VALUE_FLOAT: gconf.Value.get_float,
- gconf.VALUE_INT: gconf.Value.get_int,
- gconf.VALUE_STRING: gconf.Value.get_string }
- _gconfSetFunction = {
- bool: _config.set_bool,
- float: _config.set_float,
- int: _config.set_int,
- str: _config.set_string,
- unicode: _config.set_string }
- _defaults = {
- 'show_toolbar': True,
- 'show_history': True,
- 'maximised': False,
- 'fullscreen': False,
- 'show_3d': False,
- 'show_3d_smooth': False,
- 'show_move_hints': True,
- 'move_format': 'human',
- 'promotion_type': 'queen',
- 'board_view': 'human',
- 'show_comments': False,
- 'show_numbering': False,
- 'enable_networking': True,
- 'load_directory': '',
- 'save_directory': '',
- 'new_game_dialog/move_time': 0,
- 'new_game_dialog/white/type': '',
- 'new_game_dialog/white/difficulty': '',
- 'new_game_dialog/black/type': '',
- 'new_game_dialog/black/difficulty': '' }
-
- class Error(Exception):
- '''Exception for configuration use'''
- pass
-
-
- def get(name):
- """Get a configuration value.
-
- 'name' is the name of the value to get (string).
-
- Raises an Error exception if the value does not exist.
- """
- if haveGConfSupport:
-
- try:
- entry = _config.get(_GCONF_DIR + name)
- except gobject.GError:
- entry = None
-
- if entry is None:
-
- try:
- return _defaults[name]
- except KeyError:
- raise Error('No config value: ' + repr(name))
- except:
- None<EXCEPTION MATCH>KeyError
-
-
- None<EXCEPTION MATCH>KeyError
-
- try:
- function = _gconfGetFunction[entry.type]
- except KeyError:
- raise Error('Unknown value type')
-
- return function(entry)
-
- try:
- return _values[name]
- except KeyError:
- haveGConfSupport
- haveGConfSupport
-
- try:
- return _defaults[name]
- except KeyError:
- raise Error('No config value: ' + repr(name))
- except:
- None<EXCEPTION MATCH>KeyError
-
-
- None<EXCEPTION MATCH>KeyError
-
-
-
- def set(name, value):
- """Set a configuration value.
-
- 'name' is the name of the value to set (string).
- 'value' is the value to set to (int, str, float, bool).
- """
- if haveGConfSupport:
-
- try:
- function = _gconfSetFunction[type(value)]
- except KeyError:
- raise TypeError('Only config values of type: int, str, float, bool supported')
-
-
- try:
- function(_GCONF_DIR + name, value)
- except gobject.GError:
- pass
- except:
- None<EXCEPTION MATCH>gobject.GError
-
-
- None<EXCEPTION MATCH>gobject.GError
-
- try:
- oldValue = _values[name]
- except KeyError:
- pass
-
- if oldValue == value:
- return None
- _values[name] = value
-
- try:
- watchers = _notifiers[name]
- except KeyError:
- oldValue == value
- oldValue == value
- except:
- oldValue == value
-
- for func in watchers:
- func(name, value)
-
- _save()
-
-
- def default(name):
- set(name, _defaults[name])
-
-
- def _watch(client, _, entry, .3):
- (function, name) = .3
- value = get(name)
- function(name, value)
-
-
- def watch(name, function):
- '''
- '''
- if haveGConfSupport:
-
- try:
- _config.notify_add(_GCONF_DIR + name, _watch, (function, name))
- except gobject.GError:
- pass
- except:
- None<EXCEPTION MATCH>gobject.GError
-
-
- None<EXCEPTION MATCH>gobject.GError
-
- try:
- watchers = _notifiers[name]
- except KeyError:
- watchers = _notifiers[name] = []
-
- watchers.append(function)
-
-
- def _save():
- '''Save the current configuration'''
- if haveGConfSupport:
- return None
- document = xml.dom.minidom.Document()
- e = document.createComment('Automatically generated by glChess, do not edit!')
- document.appendChild(e)
- root = document.createElement('config')
- document.appendChild(root)
- valueNames = {
- int: 'int',
- bool: 'bool',
- float: 'float',
- str: 'str',
- unicode: 'str' }
- names = _values.keys()
- names.sort()
- for name in names:
- value = _values[name]
- e = document.createElement('value')
- root.appendChild(e)
- e.setAttribute('name', name)
- e.setAttribute('type', valueNames[type(value)])
- valueElement = document.createTextNode(str(value))
- e.appendChild(valueElement)
-
-
- try:
- f = file(CONFIG_FILE, 'w')
- except IOError:
- haveGConfSupport
- haveGConfSupport
- except:
- haveGConfSupport
-
- document.writexml(f)
- f.close()
-
-